package l1j.opqlo.Server.etcitem;

import l1j.server.server.ActionCodes;
import l1j.server.server.FishingTimeController;
import l1j.server.server.model.Instance.L1ItemInstance;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.serverpackets.S_Fishing;
import l1j.server.server.serverpackets.S_ServerMessage;
import l1j.server.server.utils.Random;

public class Fish {

	/*
	 * } else if (itemId == 41293) { //變更為魔法釣竿//TODO 變更為魔法釣竿by99團隊
	 * startFishing(pc, itemId, fishX, fishY);
	 */

	public static void begin(final int[] newData, final L1PcInstance pc,
			final L1ItemInstance l1iteminstance) {
		final int fishX = newData[0], fishY = newData[1];

		// TODO 修正3.3C釣竿下竿座標位置判斷by99團隊
		if (pc.getMapId() != 5300 || fishX <= 32704 || fishX >= 32831
				|| fishY <= 32768 || fishY >= 32895) {
			// TODO 修正3.3C釣竿下竿座標位置判斷by99團隊
			pc.sendPackets(new S_ServerMessage(1138));
			return;
		}

		int rodLength = 0;
		if (l1iteminstance.getItemId() == 41293) {// 變更為魔法釣竿//TODO 變更為魔法釣竿by99團隊
			rodLength = 5;
		}
		if (pc.getMap().isFishingZone(fishX, fishY)) {
			if (pc.getMap().isFishingZone(fishX + 1, fishY)
					&& pc.getMap().isFishingZone(fishX - 1, fishY)
					&& pc.getMap().isFishingZone(fishX, fishY + 1)
					&& pc.getMap().isFishingZone(fishX, fishY - 1)) {
				if (fishX > pc.getX() + rodLength
						|| fishX < pc.getX() - rodLength) {// ここに釣り竿を投げることはできません。
					pc.sendPackets(new S_ServerMessage(1138));
				} else if (fishY > pc.getY() + rodLength
						|| fishY < pc.getY() - rodLength) {// ここに釣り竿を投げることはできません。
					pc.sendPackets(new S_ServerMessage(1138));
				} else if (pc.getInventory().consumeItem(41295, 1)) {// TODO
																		// 新鮮的餌
					pc.sendPackets(new S_Fishing(pc.getId(),
							ActionCodes.ACTION_Fishing, fishX, fishY));
					pc.broadcastPacketAll(new S_Fishing(pc.getId(),
							ActionCodes.ACTION_Fishing, fishX, fishY));
					pc.setFishing(true);
					final long time = System.currentTimeMillis() + 10000
							+ Random.nextInt(5) * 1000;
					pc.setFishingTime(time);
					FishingTimeController.getInstance().addMember(pc);
				} else {
					// 釣りをするためにはエサが必要です。
					pc.sendPackets(new S_ServerMessage(1137));
				}
			} else {
				// ここに釣り竿を投げることはできません。
				pc.sendPackets(new S_ServerMessage(1138));
			}
		} else {
			// ここに釣り竿を投げることはできません。
			pc.sendPackets(new S_ServerMessage(1138));
		}
	}
}
